from django.views import View
from django.http.response import JsonResponse


class BaseView(View):
    ''' 视图模板，定义了所有视图公共部分 '''
    def to_json(self, code: int=200, data=None, message: str='成功'):
        ''' 将数据转为json格式的response '''
        temp_json = {'code': code, 'data': data, 'message': message}
        return JsonResponse(temp_json)
    
    def resp_err(self, message: str=None) -> JsonResponse:
        ''' 错误响应 '''
        message = message if message else '未知错误'
        return self.to_json(code=404, message=message)
    
    def dispatch(self, request, *args, **kwargs):
        ''' 通用路由分发，处理未实现接口的默认返回 '''
        if not hasattr(self, request.method.lower()):
            return self.to_json(code=503, message='无实现的接口')
        return super().dispatch(request, *args, **kwargs)
    

class BaseListView(BaseView):
    ''' 视图列表模板，定义了所有视图公共部分 '''
    def to_json(self, code: int=200, data=None, message: str='成功'):
        ''' 将数据转为json格式的response '''
        temp_json = {'code': code, 'data': data, 'message': message}
        return JsonResponse(temp_json)
    
